package demo03;

import java.io.File;

/*
 *  File类的判断功能相关方法：
 *      public boolean exists()：判断此File表示的文件或目录是否实际存在
 *      public boolean isDirectory()：判断此File表示的是否为目录
 *      public boolean isFile()：判断此File表示的是否为文件
 */
public class Demo04File {
    public static void main(String[] args) {
        // 绝对路径存在的文件file1
        File file1 = new File("D:\\code\\ameri_-java\\Java_code\\day01\\HelloWorld.java");
        // 相对路径不存在的文件file2
        File file2 = new File("a.txt");
        // 相对路径存在的文件夹file3
        File file3 = new File("src\\demo03");

        /*
         *  public boolean exists()：判断此File表示的文件或目录是否实际存在
         *      用于判断构造方法中的路径是否存在
         *          存在：返回true
         *          不存在：返回false
         */
        System.out.println(file1.exists()); // true
        System.out.println(file2.exists()); // false
        System.out.println(file3.exists()); // true

        /*
         *  public boolean isDirectory()：判断此File表示的是否为目录
         *      用于判断构造方法中的路径是否以文件夹结尾
         *          是：返回true
         *          否：返回false
         *  public boolean isFile()：判断此File表示的是否为文件
         *      用于判断构造方法中的路径是否以文件结尾
         *          是：返回true
         *          否：返回false
         *  注意：
         *      1. 电脑的硬盘中只有文件/文件夹两种格式，因此这两种方法是互斥的
         *      2. 只有路径存在，才能使用这两种方法，路径如果不存在，则返回值都是false
         *  常规判断使用方法：
         *      先使用exists方法判断路径是否存在，再使用isDirectory/isFile方法判断是文件还是文件夹
         */
        if (file1.exists()) {
            System.out.println(file1.isDirectory()); // false
            System.out.println(file1.isFile()); // true
        }
        if (file2.exists()) { // 路径不存在，则没有判断是否为文件/文件夹的必要
            System.out.println(file2.isDirectory());
            System.out.println(file2.isFile());
        }
        if (file3.exists()) {
            System.out.println(file3.isDirectory()); // true
            System.out.println(file3.isFile()); // false
        }
    }
}
